package com.play2gether;

import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import static com.play2gether.Conexiones.verificaConexion;

/**
 * Created by Raul on 20/05/14.
 */
public class sugerenciaActivity extends ActionBarActivity implements View.OnClickListener {

    public  String             id_usuario;
    public String id_postura;
    private DataBaseManager    manager;
    public String[] estado;

    public TextView nombre;
    public ImageView img;
    public Button btRechazar;
    public Button btAceptar;



    public int tipo;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sugerencia);

        //Clase para la base de datos
        manager = new DataBaseManager(this);

        Bundle bundle = getIntent().getExtras();
        id_usuario = bundle.getString("id");
        id_postura = bundle.getString("id_postura");
        estado = bundle.getStringArray("estado");

        configurarVista();
        configurarNavbar();
        obtenerDatos();
    }
    private void configurarVista(){
        img      = (ImageView) findViewById(R.id.imgPostura);
        nombre   = (TextView)  findViewById(R.id.labelPostura);
        btAceptar  = (Button)    findViewById(R.id.bt_aceptar);
        btRechazar  = (Button)    findViewById(R.id.bt_rechazar);

        img.setClickable(true);
        img.setOnClickListener(this);
        btAceptar.setOnClickListener(this);
        btRechazar.setOnClickListener(this);
    }
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    private void configurarNavbar(){
        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
        actionBar.setCustomView(R.layout.navbar);

        Button btFormularioNV = (Button) findViewById(R.id.btFormularioNV);
        Button btSugerenciaNV = (Button) findViewById(R.id.btSugerenciaNV);
        Button btOpcionesNV = (Button) findViewById(R.id.btOpcionesNV);
        Button btLogoNV = (Button) findViewById(R.id.btLogoNV);
        Button btAtras = (Button) findViewById(R.id.bt_atras);
        Button btSincronizar = (Button) findViewById(R.id.bt_sincronizar);

        TextView tituloNav = (TextView) findViewById(R.id.tituloLayout);
        tituloNav.setText("Sugerencia");

        //Botones para el navbar
        btOpcionesNV.setOnClickListener(this);
        if (!estado[0].equals("2")) {
            btFormularioNV.setAlpha(0);
            btSugerenciaNV.setAlpha(0);
            btSincronizar.setAlpha(0);
        } else {
            btFormularioNV.setOnClickListener(this);
            btSugerenciaNV.setOnClickListener(this);
        }
            btLogoNV.setOnClickListener(this);
            btAtras.setOnClickListener(this);
            btSincronizar.setOnClickListener(this);
            //btAtras.setAlpha(0);
            //btSincronizar.setAlpha(0);
            //btOpcionesNV.setAlpha(0);

        boolean haySugerencias = manager.comprobarSugerencias(id_usuario);
        if (haySugerencias){ btSugerenciaNV.setBackground(this.getResources().getDrawable(R.drawable.bt_sugerencias_notificacion)); }
        else { btSugerenciaNV.setBackground(this.getResources().getDrawable(R.drawable.bt_sugerencia_nav)); }

        boolean hayFormularios = manager.comprobarFormularios(id_usuario);
        if (hayFormularios){ btFormularioNV.setBackground(this.getResources().getDrawable(R.drawable.bt_formulario_notificacion)); }
        else { btFormularioNV.setBackground(this.getResources().getDrawable(R.drawable.bt_formulario_nav)); }
    }
    private void obtenerDatos(){
        Cursor c = manager.obtenerPostura(id_postura);
        if (c.moveToFirst()) {
            c.moveToFirst();
            int numNombre = c.getColumnIndex("nombre_postura");
            int numImagen = c.getColumnIndex("imagen");

            String titulo = c.getString(numNombre);
            String imagen = c.getString(numImagen);

            //Extrae el nombre de la imagen sin la extensión
            int pos = imagen.length()-4;
            imagen = imagen.substring(0,pos);

            Drawable imgs;
            int idimagen=getResources().getIdentifier(imagen,"drawable","com.play2gether");
            imgs = getResources().getDrawable(idimagen);
            img.setImageDrawable(imgs);

            nombre.setText(titulo);
        }
    }
        @Override
    public void onClick(View v) {
        Intent intent;
        intent = new Intent();

            switch (v.getId()) {
                case R.id.bt_rechazar:
                    actualizarSugerencia(2);
                    break;
                case R.id.bt_aceptar:
                    actualizarSugerencia(1);
                    break;
                case R.id.labelPostura:
                    cargarPostura();
                    break;
                case R.id.imgPostura:
                    cargarPostura();
                    break;
                //Botones para el natvar
                case R.id.btFormularioNV:
                    intent.setClass(this, indexFormularios.class);
                    intent.putExtra("id", id_usuario);
                    intent.putExtra("estado", estado);
                    finish();
                    startActivity(intent);
                    break;
                case R.id.btSugerenciaNV:
                    intent.setClass(this, indexSugerencias.class);
                    intent.putExtra("id", id_usuario);
                    intent.putExtra("estado", estado);
                    finish();
                    startActivity(intent);
                    break;
                case R.id.btOpcionesNV:
                    intent.setClass(this, menuActivity.class);
                    intent.putExtra("id", id_usuario);
                    intent.putExtra("estado", estado);
                    finish();
                    startActivity(intent);
                    break;
                case R.id.bt_atras:
                    finish();
                    break;
                case R.id.btLogoNV:
                    finish();
                    break;
                case R.id.bt_sincronizar:
                    sincronizar();
                    break;
            }
        }
    private void cargarPostura(){
        Intent intent = new Intent(this, kamasutraActivity.class);
        intent.putExtra("id_postura",id_postura);
        intent.putExtra("id",id_usuario);
        intent.putExtra("estado",estado);
        startActivity(intent);
    }
    private void actualizarSugerencia(int t){
        tipo = t;
        if(verificaConexion(this)){
            try {
                new actualizarSugerenciaServer().execute();
            } catch (Exception e) {
                e.printStackTrace();
                Log.e("ERROR", e.getMessage());
            }
        }else {
            mostrarAlerta("No hay conexión", "Prueba de nuevo cuando estés conectado a la red!!");
        }
    }
    public void mostrarAlerta(String titulo, String texto){
        AlertDialog.Builder alertDialog2 = new AlertDialog.Builder(this);
        alertDialog2.setTitle(titulo);
        alertDialog2.setMessage(texto);

        alertDialog2.setPositiveButton("Cerrar",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {}
        });
        alertDialog2.show();

    }
    public class actualizarSugerenciaServer extends AsyncTask<Void, Void, String> {
        protected void onPreExecute(){}

        @Override
        protected String doInBackground(Void... String) {
            String url;
            if (tipo==1) { url = "http://mediadomeprojects.com/arkdyanbyte/play2gether/public/aceptar_sugerencia";  }
            else         { url = "http://mediadomeprojects.com/arkdyanbyte/play2gether/public/cancelar_sugerencia"; }

            String id_sugerencia = manager.obtenerSugerencia(id_usuario,id_postura);

            HttpClient cliente = new DefaultHttpClient();
            HttpPost htppost = new HttpPost(url);
            //BufferedReader bfr;
            String text = "Error";
            String result="";
            InputStream is = null;
            JSONObject json = null;

            //Añadir parametros
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("id_sug_usuario",id_sugerencia));

            try {
                htppost.setEntity(new UrlEncodedFormEntity(params));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

            try {
                HttpResponse respuesta = cliente.execute(htppost);
                HttpEntity entity = respuesta.getEntity();
                is = entity.getContent();
                //text = EntityUtils.toString(entity);
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return id_sugerencia;
        }
        protected void onPostExecute(String id_sugerencia) {
            if (manager.borrarSugerencia(id_sugerencia)){
               mostrarAlerta3();

            }else{
                Toast.makeText(getApplicationContext(),"Ha habido un error al borrar la sugerencia", Toast.LENGTH_SHORT).show();
            }
        }
    }
    public void mostrarAlerta3(){
        AlertDialog.Builder alertDialog2 = new AlertDialog.Builder(this);
        if(tipo==1){ alertDialog2.setTitle("Has aceptado la sugerencia!!"); }
        else       { alertDialog2.setTitle("Has rechazado la sugerencia!!"); }

        alertDialog2.setMessage("¿Quieres volver al listado de sugerencias?");

        alertDialog2.setPositiveButton("Sí",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                Intent intent = new Intent(sugerenciaActivity.this, indexSugerencias.class);
                intent.putExtra("id_postura",id_postura);
                intent.putExtra("id",id_usuario);
                intent.putExtra("estado",estado);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
            }
        });
        alertDialog2.setNegativeButton("No",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                Intent intent = new Intent(sugerenciaActivity.this, principalActivity.class);
                intent.putExtra("id_postura",id_postura);
                intent.putExtra("id",id_usuario);
                intent.putExtra("estado",estado);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
            }
        });
        alertDialog2.show();

    }
    public void sincronizar(){
        Sincronizar sinc = new Sincronizar(id_usuario,this);
        sinc.sincronizar();

    };
}
